home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / capus2 / eshell / sources / eshellcom1.e < prev    next >
Text File  |  1995-03-20  |  26KB  |  863 lines

  1. /*"»»»»»»»»»»»»»»» CD"*/
  2. /*"cd(chemin)"*/
  3. PROC cd(chemin)
  4.     DEF lock,dlock
  5.     DEF olddir,name[256]:STRING
  6.     DEF rc[256]:STRING
  7.     DEF m:PTR TO LONG
  8.     m:=[0]
  9.     MidStr(rc,chemin,3,ALL)
  10.     StringF(name,'\s',rc)
  11.     IF getArg(name,'Dossier',m)
  12.         IF m[0]<>NIL
  13.             IF lock:=Lock(rc,-2)
  14.                 dlock:=DupLock(lock)
  15.                 IF lock THEN UnLock(lock)
  16.             ELSE
  17.                 WriteF('Directory error\n')
  18.                 JUMP cdend
  19.             ENDIF
  20.             olddir:=CurrentDir(dlock)
  21.             pro.currentdir:=dlock
  22.             NameFromLock(dlock,name,256)
  23.             StringF(prompt,'\e[32m\d.\e[31m\s[\e[33m\d\e[31m]>',pro.tasknum,name,cl.returncode)
  24.             StrCopy(cdn,name,ALL)
  25.             m[0]:=NIL
  26.         ELSE
  27.             WriteF('\s\n',cdn)
  28.         ENDIF
  29.     ENDIF
  30.     cdend:
  31. ENDPROC
  32. /**/
  33. /**/
  34. /*"»»»»»»»»»»»»»»» PSLIST"*/
  35. /*"pslist()"*/
  36. PROC pslist()
  37.     DEF ps:PTR TO pubscreennode
  38.     DEF sn:PTR TO ln
  39.     DEF psl:PTR TO lh
  40.     IF psl:=LockPubScreenList()
  41.         sn:=psl.head
  42.         WHILE sn
  43.             ps:=sn
  44.             IF sn.succ<>0
  45.                 WriteF('Name:\l\s[20] Adr Screen:\z\h[8] Flags:\z\h[8] SigTask:\z\h[8] SigBit:\z\h[8]\n',
  46.                         sn.name,ps.screen,ps.flags,ps.sigtask,ps.sigbit)
  47.             ENDIF
  48.             sn:=sn.succ
  49.         ENDWHILE
  50.         UnlockPubScreenList()
  51.     ENDIF
  52. ENDPROC
  53. /**/
  54. /**/
  55. /*"»»»»»»»»»»»»»»» RESET"*/
  56. /*"reset()"*/
  57. PROC reset()
  58.     ColdReboot()
  59. ENDPROC
  60. /**/
  61. /**/
  62. /*"»»»»»»»»»»»»»»» PCDIR"*/
  63. /*"pcdir(str)"*/
  64. PROC pcdir(str)
  65.     DEF dirw[100]:STRING
  66.     DEF l,fib:fileinfoblock,dd=TRUE,df=TRUE,dr=FALSE,noic=FALSE
  67.     DEF m:PTR TO LONG
  68.     DEF argstr[256]:STRING
  69.     DEF fn:PTR TO filenode
  70.     DEF n:PTR TO ln
  71.     DEF fileout=FALSE,nameout[80]:STRING,hout=NIL,oldout
  72.     /*==================================================*/
  73.     MidStr(argstr,str,5,ALL)
  74.     m:=[0,0,0,0,0,0]
  75.     IF getArg(argstr,'Dir,Dirs/S,Files/S,All/S,NoIcon/S,To/K',m)
  76.         IF m[0] THEN StringF(dirw,'\s',m[0]) ELSE StrCopy(dirw,'',ALL)
  77.         IF m[1] THEN df:=FALSE
  78.         IF m[2] THEN dd:=FALSE
  79.         IF m[3] THEN dr:=TRUE
  80.         IF m[4] THEN noic:=TRUE
  81.         IF m[5]
  82.             fileout:=TRUE
  83.             StrCopy(nameout,m[5],ALL)
  84.         ENDIF
  85.         l:=Lock(dirw,-2)
  86.         IF l
  87.             IF Examine(l,fib) AND (fib.direntrytype>0)
  88.                 AddPart(dirw,'#?',100)
  89.             ENDIF
  90.             UnLock(l)
  91.         ENDIF
  92.         makefilelist(dirw,dd,df,dr)
  93.         IF fileout=TRUE
  94.             IF hout:=Open(nameout,1006) 
  95.                 oldout:=stdout
  96.                 stdout:=hout 
  97.             ELSE 
  98.                 JUMP pcdirend
  99.             ENDIF
  100.         ENDIF
  101.         n:=filelist.head
  102.         WHILE n
  103.             IF CtrlC()
  104.                 WriteF('>>>> Break C\n')
  105.                 JUMP pcdirend
  106.             ENDIF
  107.             IF n.succ<>0
  108.                 fn:=n
  109.                 StringF(dirw,'\s\s',fn.curdirname,n.name)
  110.                 IF ((noic=TRUE) AND (InStr(n.name,'.info',0)<>-1))
  111.                     NOP
  112.                 ELSE
  113.                     l:=p_GetNumSlash(dirw)
  114.                     FOR dd:=0 TO l-1
  115.                         WriteF('\e[33m|   \e[0m')
  116.                     ENDFOR
  117.                     WriteF('\e[33m|---\e[0m')
  118.                     IF fn.direntrytype>0
  119.                         WriteF('\e[32m\s\e[0m\n',n.name)
  120.                     ELSE
  121.                         WriteF('\e[0m\s\n',n.name)
  122.                     ENDIF
  123.                 ENDIF
  124.             ENDIF
  125.             n:=n.succ
  126.         ENDWHILE
  127.         pcdirend:
  128.         filelist:=p_CleanList(filelist,TRUE,freenode,LIST_CLEAN)
  129.         m[0]:=0;m[1]:=0;m[2]:=0;m[3]:=0;m[4]:=0;m[5]:=0
  130.         IF (fileout=TRUE AND hout<>NIL)
  131.             IF hout 
  132.                 Close(hout)
  133.                 stdout:=oldout
  134.             ENDIF
  135.         ENDIF
  136.     ELSE
  137.         WriteF('BadArgs !!.\n')
  138.     ENDIF
  139. ENDPROC
  140. /**/
  141. /*"p_GetNumSlash(str)"*/
  142. PROC p_GetNumSlash(str) 
  143.     DEF b,s=0
  144.     DEF carac[1]:STRING
  145.     FOR b:=0 TO StrLen(str)-1
  146.         MidStr(carac,str,b,1)
  147.         IF Char(carac)=$2F THEN INC s
  148.     ENDFOR
  149. ENDPROC s
  150. /**/
  151. /**/
  152. /*"»»»»»»»»»»»»»»» D"*/
  153. /*"d(str)"*/
  154. PROC d(str) HANDLE
  155.     DEF dirw[100]:STRING
  156.     DEF l=NIL,fib:fileinfoblock
  157.     DEF argstr[256]:STRING
  158.     DEF m:PTR TO LONG,dd=TRUE,df=TRUE,dr=FALSE
  159.     DEF fn:PTR TO filenode
  160.     DEF n:PTR TO ln
  161.     DEF fileout=FALSE,nameout[80]:STRING,hout=NIL,oldout
  162.     /*==================================================*/
  163.     MidStr(argstr,str,1,ALL)
  164.     m:=[0,0,0,0,0]
  165.     IF getArg(argstr,'Dir,Dirs/S,Files/S,All/S,To/K',m)
  166.         IF m[0] THEN StringF(dirw,'\s',m[0]) ELSE StrCopy(dirw,'',ALL)
  167.         IF m[1] THEN df:=FALSE
  168.         IF m[2] THEN dd:=FALSE
  169.         IF m[3] THEN dr:=TRUE
  170.         IF m[4]
  171.             fileout:=TRUE
  172.             StrCopy(nameout,m[4],ALL)
  173.         ENDIF
  174.         l:=Lock(dirw,-2)
  175.         IF l
  176.             IF Examine(l,fib) AND (fib.direntrytype>0)
  177.                 AddPart(dirw,'#?',100)
  178.             ENDIF
  179.             UnLock(l)
  180.         ENDIF
  181.         makefilelist(dirw,dd,df,dr)
  182.         IF fileout=TRUE
  183.             IF hout:=Open(nameout,1006) 
  184.                 oldout:=stdout
  185.                 stdout:=hout 
  186.             ELSE 
  187.                 JUMP dend
  188.             ENDIF
  189.         ENDIF
  190.         l:=1
  191.         n:=filelist.head
  192.         WHILE n
  193.             IF CtrlC()
  194.                 WriteF('>>>> Break C\n')
  195.                 JUMP dend
  196.             ENDIF
  197.             IF n.succ<>0
  198.                 fn:=n
  199.                 IF fn.direntrytype>0
  200.                     WriteF('\e[32m\s[20] \e[0m\s[12]',n.name,'<dir>')
  201.                 ELSE
  202.                     WriteF('\s[20] \d[12]',n.name,fn.size)
  203.                 ENDIF
  204.                 IF Even(l) THEN WriteF('\n')
  205.                 INC l
  206.             ENDIF
  207.             n:=n.succ
  208.         ENDWHILE
  209.         IF Even(l) THEN WriteF('\n')
  210.         dend:
  211.         filelist:=p_CleanList(filelist,TRUE,freenode,LIST_CLEAN)
  212.         m[0]:=0;m[1]:=0;m[2]:=0;m[3]:=0;m[4]:=0
  213.         IF (fileout=TRUE AND hout<>NIL)
  214.             IF hout THEN Close(hout)
  215.             stdout:=oldout
  216.         ENDIF
  217.     ELSE
  218.         WriteF('Bad Args!!.\n')
  219.     ENDIF
  220. EXCEPT
  221.     RETURN exception
  222. ENDPROC
  223. /**/
  224. /**/
  225. /*"»»»»»»»»»»»»»»» CHANGEDPS"*/
  226. /*"changedps(s)"*/
  227. PROC changedps(s)
  228.     DEF m:PTR TO LONG
  229.     DEF argstr[256]:STRING
  230.     DEF namescreen[80]:STRING,info=FALSE
  231.     DEF scr
  232.     m:=[0,0]
  233.     MidStr(argstr,s,9,ALL)
  234.     IF getArg(argstr,'Name,Info/S',m)
  235.         IF m[0] THEN StrCopy(namescreen,m[0],ALL) ELSE StrCopy(namescreen,'Workbench',ALL)
  236.         IF m[1]
  237.             GetDefaultPubScreen(namescreen)
  238.             JUMP cdpsend
  239.         ENDIF
  240.         IF scr:=LockPubScreen(namescreen)
  241.             SetDefaultPubScreen(namescreen)
  242.             SetPubScreenModes(SHANGHAI)
  243.             UnlockPubScreen(NIL,scr)
  244.         ELSE
  245.             WriteF('écran introuvable.\n')
  246.         ENDIF
  247.     ELSE
  248.         WriteF('Bad Arg!!.\n')
  249.     ENDIF
  250.     cdpsend:
  251.     m[0]:=0;m[1]:=0
  252.     WriteF('Ecran Public :\s\n',namescreen)
  253. ENDPROC
  254. /**/
  255. /**/
  256. /*"»»»»»»»»»»»»»»» EXECUTE"*/
  257. /*"execute(cmd,dir,sta,pp,mode)"*/
  258. PROC execute(cmd,dir,sta,pp,mode) HANDLE
  259.     DEF ofh=NIL:PTR TO filehandle
  260.     DEF ifh=NIL:PTR TO filehandle
  261.     DEF newct=NIL:PTR TO mp
  262.     DEF oldct:PTR TO mp
  263.     DEF oldcd
  264.     DEF newcd
  265.     DEF r
  266.     DEF rcmd[256]:STRING
  267.     IF mode=TRUE THEN MidStr(rcmd,cmd,4,ALL) ELSE StrCopy(rcmd,cmd,ALL)
  268.     IF ofh:=Open('NIL:',1006)
  269.         IF IsInteractive(ofh)
  270.             newct:=ofh.type
  271.             oldct:=SetConsoleTask(newct)
  272.             ifh:=Open('CONSOLE:',1005)
  273.             SetConsoleTask(oldct)
  274.             ELSE
  275.             ifh:=Open('NIL:',1005)
  276.         ENDIF
  277.     ENDIF
  278.     newcd:=Lock(dir,-2)
  279.     oldcd:=CurrentDir(newcd)
  280.     IF r:=SystemTagList(cmd,[SYS_OUTPUT,IF mode=TRUE THEN ofh ELSE con,
  281.                          SYS_INPUT,IF mode=TRUE THEN ifh ELSE 0,
  282.                          SYS_ASYNCH,mode,
  283.                          SYS_USERSHELL,TRUE,
  284.                          NP_STACKSIZE,sta,
  285.                          NP_PRIORITY,pp,
  286.                          NP_CLOSEINPUT,FALSE,
  287.                          NP_CLOSEOUTPUT,FALSE,
  288.                          0])
  289.     ENDIF
  290.     CurrentDir(oldcd)
  291.     IF newcd THEN UnLock(newcd)
  292.     IF ofh THEN Close(ofh)
  293.     IF ifh THEN Close(ifh)
  294.     Raise(r)
  295. EXCEPT
  296.     RETURN r
  297. ENDPROC
  298. /**/
  299. /**/
  300. /*"»»»»»»»»»»»»»»» MDIR"*/
  301. /*"mdir(s)"*/
  302. PROC mdir(s)
  303.     DEF m:PTR TO LONG
  304.     DEF name[80]:STRING
  305.     DEF argstr[256]:STRING
  306.     DEF r
  307.     m:=[0]
  308.     MidStr(argstr,s,4,ALL)
  309.     IF getArg(argstr,'Dossier',m)
  310.         IF m[0]
  311.             StringF(name,'\s',m[0])
  312.             r:=CreateDir(name)
  313.             IF r=0 THEN WriteF('Impssible de créer \s\n',name) ELSE UnLock(r)
  314.         ENDIF
  315.     ELSE
  316.         WriteF('Bad Arg!!.\n')
  317.     ENDIF
  318.     m[0]:=0
  319. ENDPROC
  320. /**/
  321. /**/
  322. /*"»»»»»»»»»»»»»»» DELAY"*/
  323. /*"delay(s)"*/
  324. PROC delay(s)
  325.     DEF m:PTR TO LONG
  326.     DEF argstr[256]:STRING
  327.     DEF t
  328.     m:=[0]
  329.     MidStr(argstr,s,5,ALL)
  330.     IF getArg(argstr,'Temps/N',m)
  331.         IF m[0] THEN t:=Long(m[0]) ELSE t:=0
  332.         Delay(t)
  333.     ELSE
  334.         WriteF('Bad Arg!!.\n')
  335.     ENDIF
  336.     m[0]:=0
  337. ENDPROC
  338. /**/
  339. /**/
  340. /*"»»»»»»»»»»»»»»» SETCOM"*/
  341. /*"setcom(s)"*/
  342. PROC setcom(s) HANDLE
  343.     DEF m:PTR TO LONG
  344.     DEF argstr[256]:STRING
  345.     DEF file[256]:STRING
  346.     DEF com[256]:STRING
  347.     DEF r
  348.     DEF fn:PTR TO filenode
  349.     DEF n:PTR TO ln,dd=TRUE,df=TRUE,dr=FALSE
  350.     MidStr(argstr,s,6,ALL)
  351.     m:=[0,0,0,0,0]
  352.     IF getArg(argstr,'Fichier,C=Commentaire/K,Files/S,Dirs/S,All/S',m)
  353.         IF m[0] THEN StrCopy(file,m[0],ALL)
  354.         IF m[1] THEN StrCopy(com,m[1],ALL)
  355.         IF m[2] THEN dd:=FALSE
  356.         IF m[3] THEN df:=FALSE
  357.         IF m[4] THEN dr:=TRUE
  358.         IF m[4]
  359.             r:=makefilelist(file,dd,df,dr)
  360.             n:=filelist.head
  361.             WHILE n
  362.                 IF n.succ<>0
  363.                     fn:=n
  364.                     StringF(file,'\s\s',fn.curdirname,n.name)
  365.                     r:=SetComment(file,com)
  366.                     IF r=0 THEN WriteF('\s non trouvé.\n',file)
  367.                 ENDIF
  368.                 n:=n.succ
  369.             ENDWHILE
  370.             filelist:=p_CleanList(filelist,TRUE,freenode,LIST_CLEAN)
  371.         ELSE
  372.             r:=SetComment(file,com)
  373.             IF r=0 THEN WriteF('\s non trouvé.\n',file) ELSE WriteF('\s "\s"\n',file,com)
  374.         ENDIF
  375.     ELSE
  376.         WriteF('Bad Arg!!.\n')
  377.     ENDIF
  378.     m[0]:=0;m[1]:=0;m[2]:=0;m[3]:=0;m[4]:=0
  379. EXCEPT
  380.     RETURN exception
  381. ENDPROC
  382. /**/
  383. /**/
  384. /*"»»»»»»»»»»»»»»» QHELP"*/
  385. /*"qhelp()"*/
  386. PROC qhelp()
  387.     DEF i,com:PTR TO ecom
  388.     WriteF('\e[32m\s\e[0m\n',title_req)
  389.     FOR i:=0 TO MAX_COMMAND-1
  390.         com:=commandlist[i]
  391.         WriteF('\l\s[15] v \d[2].\d[2] Auteur:\s\n',com.name,com.version,com.revision,com.author)
  392.     ENDFOR
  393.     /*
  394.     WriteF('cd,pslist,reset,pcdir,d,changedsp\n')
  395.     WriteF('mdir,delay,setcom,ass,del,bye,fullsize,syslist\n')
  396.     WriteF('mem\n')
  397.     */
  398. ENDPROC
  399. /**/
  400. /**/
  401. /*"»»»»»»»»»»»»»»» DEL"*/
  402. /*"del(s)"*/
  403. PROC del(s)
  404.     DEF m:PTR TO LONG
  405.     DEF dd=TRUE,df=TRUE,dr=FALSE
  406.     DEF argstr[256]:STRING
  407.     DEF file[256]:STRING
  408.     DEF r
  409.     DEF n:PTR TO ln
  410.     DEF fn:PTR TO filenode
  411.     DEF nbrs,t,l,fname[256]:STRING,w=FALSE
  412.     MidStr(argstr,s,3,ALL)
  413.     m:=[0,0,0,0,0]
  414.     IF getArg(argstr,'File,Dirs/S,Files/S,All/S,Write/S',m)
  415.         IF m[0] THEN StrCopy(file,m[0],ALL) ELSE StrCopy(file,'',ALL)
  416.         IF m[1] THEN df:=FALSE
  417.         IF m[2] THEN dd:=FALSE
  418.         IF m[3] THEN dr:=TRUE
  419.         IF m[4] THEN w:=TRUE
  420.         IF m[0]
  421.             r:=makefilelist(file,dd,df,dr)
  422.             nbrs:=p_CountNodes(filelist)
  423.             FOR r:=nbrs-1 TO 0 STEP -1
  424.                 n:=p_GetAdrNode(filelist,r)
  425.                 fn:=n
  426.                 IF CtrlC()
  427.                     WriteF('>>>> Break C\n')
  428.                     JUMP delend
  429.                 ENDIF
  430.                 IF StrCmp(fn.curdirname,n.name,EstrLen(n.name))
  431.                     StringF(argstr,'\s',n.name)
  432.                 ELSE
  433.                     StringF(argstr,'\s\s',fn.curdirname,n.name)
  434.                 ENDIF
  435.                 t:=DeleteFile(argstr)
  436.                 IF t<>-1 THEN WriteF('Impossible d\aeffacer \s\n',argstr)
  437.                 IF (w=TRUE AND t=-1) THEN WriteF('Del \s\n',argstr)
  438.             ENDFOR
  439.             delend:
  440.             filelist:=p_CleanList(filelist,TRUE,freenode,LIST_CLEAN)
  441.         ENDIF
  442.     ELSE
  443.         WriteF('Bad Args!!.\n')
  444.     ENDIF
  445.     m[0]:=0;m[1]:=0;m[2]:=0;m[3]:=0;m[4]:=0
  446. ENDPROC
  447. /**/
  448. /**/
  449. /*"»»»»»»»»»»»»»»» FULLSIZE"*/
  450. /*"fullsize(str)"*/
  451. PROC fullsize(str)
  452.     DEF m:PTR TO LONG
  453.     DEF argstr[256]:STRING
  454.     DEF firstdir[256]:STRING
  455.     DEF data:PTR TO LONG
  456.     m:=[0]
  457.     data:=[0,0,0]
  458.     MidStr(argstr,str,8,ALL)
  459.     IF getArg(argstr,'Dossier',m)
  460.         IF m[0] THEN StringF(firstdir,m[0],ALL) ELSE StrCopy(firstdir,'',ALL)
  461.         p_LookDir(firstdir,data)
  462.         WriteF('\n\e[1m\e[31mNumber of File(s) :\e[33m\d\e[0m\n',data[2])
  463.         WriteF('\e[1m\e[31mNumber of Dir(s)  :\e[33m\d\e[0m\n',data[1])
  464.     ELSE
  465.         WriteF('Bad Args!!\n')
  466.     ENDIF
  467.     m[0]:=0;data[0]:=0;data[1]:=0;data[2]:=0
  468. ENDPROC
  469. /**/
  470. /*"p_LookDir(curdir)"*/
  471. PROC p_LookDir(curdir,dd:PTR TO LONG)
  472.   DEF info:fileinfoblock,lock
  473.   DEF currentdir[256]:STRING,pv[256]:STRING
  474.   IF lock:=Lock(curdir,-2)
  475.     NameFromLock(lock,currentdir,256)
  476.     AddPart(currentdir,'',256)
  477.     IF Examine(lock,info)
  478.       IF info.direntrytype>0
  479.         WHILE ExNext(lock,info)
  480.             IF info.direntrytype>0
  481.               StringF(pv,'\s\s',currentdir,info.filename)
  482.               dd[1]:=dd[1]+1
  483.               p_LookDir(pv,dd)
  484.             ELSE
  485.               dd[0]:=dd[0]+info.size
  486.               WriteF('\b\e[1m\e[31mFullSize v0.1 © 1994 NasGûl:\e[1m\e[32m\d \e[1m\e[0mOctets.',dd[0])
  487.               dd[2]:=dd[2]+1
  488.             ENDIF
  489.         ENDWHILE
  490.       ELSE
  491.       ENDIF
  492.     ENDIF
  493.     UnLock(lock)
  494.   ELSE
  495.     WriteF('What ?!?\n')
  496.   ENDIF
  497. ENDPROC
  498. /**/
  499. /**/
  500. /*"»»»»»»»»»»»»»»» SYSLIST"*/
  501. /*"syslist(s)"*/
  502. PROC syslist(s)
  503.     DEF m:PTR TO LONG
  504.     DEF argstr[256]:STRING
  505.     DEF slist:PTR TO lh
  506.     DEF disp=NIL
  507.     DEF n:PTR TO ln
  508.     m:=[0,0,0,0,0,0]
  509.     MidStr(argstr,s,7,ALL)
  510.     IF getArg(argstr,'T=Task/S,L=Library/S,D=Device/S,P=Port/S,W=Window/S,M=Memory/S',m)
  511.         IF m[0] THEN disp:=disp+LIST_TASK
  512.         IF m[1] THEN disp:=disp+LIST_LIBRARY
  513.         IF m[2] THEN disp:=disp+LIST_DEVICE
  514.         IF m[3] THEN disp:=disp+LIST_PORT
  515.         IF m[4] THEN disp:=disp+LIST_WINDOW
  516.         IF m[5] THEN disp:=disp+LIST_MEMORY
  517.         IF slist:=p_InitList()
  518.             IF (disp AND LIST_TASK)
  519.                 displaytasks(slist,execbase)
  520.             ENDIF
  521.             IF (disp AND LIST_LIBRARY)
  522.                 displaylibraries(slist,execbase)
  523.             ENDIF
  524.             IF (disp AND LIST_DEVICE)
  525.                 displaydevices(slist,execbase)
  526.             ENDIF
  527.             IF (disp AND LIST_PORT)
  528.                 displayports(slist,execbase)
  529.             ENDIF
  530.             IF (disp AND LIST_WINDOW)
  531.                 displaywindows(slist,execbase)
  532.             ENDIF
  533.             IF (disp AND LIST_MEMORY)
  534.                 displaymemory(slist,execbase)
  535.             ENDIF
  536.             n:=slist.head
  537.             WHILE n
  538.                 IF n.succ<>0
  539.                     WriteF('\s\n',n.name)
  540.                 ENDIF
  541.                 n:=n.succ
  542.             ENDWHILE
  543.             IF slist THEN p_CleanList(slist,FALSE,0,LIST_REMOVE)
  544.         ENDIF
  545.     ELSE
  546.         WriteF('Bad Args !!.\n')
  547.     ENDIF
  548.     m[0]:=0;m[1]:=0;m[2]:=0;m[3]:=0;m[4]:=0;m[5]:=0
  549. ENDPROC
  550.  
  551.  
  552.  
  553.  
  554. /*"MAN COMMAND"*/
  555. /*"man(str)"*/
  556. PROC man(str)
  557.     DEF fh,buf[1000]:ARRAY,n=0,last=NIL,sl,first=NIL
  558.     DEF a[100]:STRING,pa[100]:STRING,found=FALSE
  559.     DEF m:PTR TO LONG
  560.     DEF argstr[256]:STRING
  561.     MidStr(argstr,str,3,ALL)
  562.     m:=[0]
  563.     IF getArg(argstr,'Command',m)
  564.         IF m[0]
  565.             IF fh:=Open('ESH:Eshell.Doc',OLDFILE)
  566.                 WHILE Fgets(fh,buf,1000)
  567.                     IF (sl:=String(StrLen(buf)))=NIL THEN Raise("MEM")
  568.                     StrCopy(sl,buf,ALL)
  569.                     IF last THEN Link(last,sl) ELSE first:=sl
  570.                     last:=sl
  571.                     /*
  572.                     StringF(a,'\s',argstr)
  573.                     UpperStr(a)
  574.                     StringF(pa,'Commande \s',a)
  575.                     StrCopy(argstr,pa,ALL)
  576.                     IF found=TRUE
  577.                         IF StrCmp(sl,'Commande',8) THEN JUMP manend1
  578.                         WriteF('\s\n',sl)
  579.                     ELSEIF StrCmp(sl,argstr,EstrLen(argstr))
  580.                         WriteF('\s\n',sl)
  581.                         found:=TRUE
  582.                     ENDIF
  583.                     */
  584.                     INC n
  585.                 ENDWHILE
  586.                 manend1:
  587.                 Close(fh)
  588.                 StringF(a,'\s',argstr)
  589.                 UpperStr(a)
  590.                 StringF(pa,'Commande \s',a)
  591.                 StrCopy(argstr,pa,ALL)
  592.                 WriteF('\s \s \s \s\n',pa,argstr,m[0],a)
  593.                 sl:=first
  594.                 WHILE sl
  595.                     StringF(argstr,'\s',sl)
  596.                     IF found=TRUE
  597.                         IF StrCmp(argstr,'Commande',8) THEN JUMP manend
  598.                         PutStr(sl)
  599.                         /*
  600.                         WriteF('\s\n',argstr)
  601.                         */
  602.                     ELSEIF StrCmp(sl,pa,EstrLen(pa))
  603.                         PutStr(sl)
  604.                         /*
  605.                         WriteF('\s\n',argstr)
  606.                         */
  607.                         found:=TRUE
  608.                     ENDIF
  609.                     sl:=Next(sl)
  610.                 ENDWHILE
  611.             ELSE
  612.                 WriteF('Pas de fichier doc..\n')
  613.             ENDIF
  614.         ENDIF
  615.     ELSE
  616.         WriteF('Bad Arg!!.')
  617.     ENDIF
  618.     manend:
  619.     /*DisposeLink(first)*/
  620.     m[0]:=0
  621. ENDPROC
  622. /**/
  623. /**/
  624. /**/
  625. /*"displaytasks(wlist,exec:PTR TO execbase)"*/
  626. PROC displaytasks(wlist,exec:PTR TO execbase)
  627. /*===============================================================================
  628.  = Para         : NONE
  629.  = Return       : NONE
  630.  = Description  : Build String and copy them to wlist.
  631.  ==============================================================================*/
  632.   DEF tlist:PTR TO tc,tlist2:PTR TO tc,node:PTR TO ln
  633.   DEF list:PTR TO lh
  634.   DEF pro:PTR TO process
  635.   DEF cl:PTR TO commandlineinterface
  636.   DEF datastr[256]:STRING
  637.   DEF tname[80]:STRING
  638.   p_AjouteNode(wlist,'  Adr    Taskname                 Pri    Sig       Stack',0)
  639.   p_AjouteNode(wlist,'--------------------------------------------------------',0)
  640.   Forbid()
  641.   list:=exec.taskwait
  642.   tlist2:=list.head
  643.   list:=exec.taskready
  644.   tlist:=list.head
  645.   WHILE tlist
  646.     node:=tlist
  647.     pro:=tlist
  648.     IF node.succ
  649.         IF (node.type=NT_PROCESS AND pro.tasknum<>0)
  650.             cl:=Shl(pro.cli,2)
  651.             StringF(tname,'\s [\d]',TrimStr(Shl(cl.commandname,2)),pro.tasknum)
  652.         ELSE
  653.             StrCopy(tname,node.name,ALL)
  654.         ENDIF
  655.         StringF(datastr,'\z\h[8] \l\s[20]  \r\d[5]  $\z\h[8]  \r\d[6]',
  656.                 tlist,tname,node.pri,tlist.sigwait,tlist.spupper-tlist.splower)
  657.                 p_AjouteNode(wlist,datastr,0)
  658.     ENDIF
  659.     tlist:=node.succ
  660.     IF (tlist=NIL) AND (tlist2<>NIL)
  661.       tlist:=tlist2
  662.       tlist2:=NIL
  663.     ENDIF
  664.   ENDWHILE
  665.   Permit()
  666.   tlist:=FindTask(NIL)
  667.   node:=tlist
  668.   pro:=tlist
  669.   IF (node.type=NT_PROCESS AND pro.tasknum<>0)
  670.       cl:=Shl(pro.cli,2)
  671.       StringF(tname,'\s [\d]',TrimStr(Shl(cl.commandname,2)),pro.tasknum)
  672.   ELSE
  673.       StrCopy(tname,node.name,ALL)
  674.   ENDIF
  675.   StringF(datastr,'\z\h[8] \l\s[20]  \r\d[5]  $\z\h[8]  \r\d[6]',
  676.           tlist,tname,node.pri,tlist.sigwait,tlist.spupper-tlist.splower)
  677.   p_AjouteNode(wlist,datastr,0)
  678. ENDPROC
  679. /**/
  680. /*"displaylibraries(wlist,exec:PTR TO execbase)"*/
  681. PROC displaylibraries(wlist,exec:PTR TO execbase)
  682. /*===============================================================================
  683.  = Para         : NONE
  684.  = Return       : NONE
  685.  = Description  : Build String and copy them to wlist.
  686.  ==============================================================================*/
  687.   DEF llist:PTR TO lib,node:PTR TO ln
  688.   DEF list:PTR TO lh
  689.   DEF datastr[256]:STRING
  690.   p_AjouteNode(wlist,'  Adr    Libraryname                  Pri   Version  OpenCnt',0)
  691.   p_AjouteNode(wlist,'------------------------------------------------------------',0)
  692.   Forbid()
  693.   list:=exec.liblist
  694.   llist:=list.head
  695.   WHILE llist
  696.     node:=llist
  697.     IF node.succ
  698.       StringF(datastr,'\z\h[8] \l\s[25]  \r\d[5]  \d[3].\l\d[4]  \d[3]',
  699.         llist,node.name,node.pri,llist.version,llist.revision,llist.opencnt)
  700.         p_AjouteNode(wlist,datastr,0)
  701.     ENDIF
  702.     llist:=node.succ
  703.   ENDWHILE
  704.   Permit()
  705. ENDPROC
  706. /**/
  707. /*"displaydevices(wlist,exec:PTR TO execbase)"*/
  708. PROC displaydevices(wlist,exec:PTR TO execbase)
  709. /*===============================================================================
  710.  = Para         : NONE
  711.  = Return       : NONE
  712.  = Description  : Build String and copy them to wlist.
  713.  ==============================================================================*/
  714.   DEF dlist:PTR TO lib,node:PTR TO ln,list:PTR TO lh
  715.   DEF datastr[256]:STRING
  716.   p_AjouteNode(wlist,'  Adr    Devicename                   Pri   Version  OpenCnt',0)
  717.   p_AjouteNode(wlist,'------------------------------------------------------------',0)
  718.   Forbid()
  719.   list:=exec.devicelist
  720.   dlist:=list.head
  721.   WHILE dlist
  722.     node:=dlist
  723.     IF node.succ
  724.       StringF(datastr,'\z\h[8] \l\s[25]  \r\d[5]  \d[3].\l\d[4]  \d[3]',
  725.         dlist,node.name,node.pri,dlist.version,dlist.revision,dlist.opencnt)
  726.         p_AjouteNode(wlist,datastr,0)
  727.     ENDIF
  728.     dlist:=node.succ
  729.   ENDWHILE
  730.   Permit()
  731. ENDPROC
  732. /**/
  733. /*"displayports(wlist,exec:PTR TO execbase)"*/
  734. PROC displayports(wlist,exec:PTR TO execbase)
  735. /*===============================================================================
  736.  = Para         : NONE
  737.  = Return       : NONE
  738.  = Description  : Build String and copy them to wlist.
  739.  ==============================================================================*/
  740.   DEF plist:PTR TO mp,taskname,portname,node:PTR TO ln,t:PTR TO ln,list:PTR TO lh
  741.   DEF datastr[256]:STRING
  742.   p_AjouteNode(wlist,'  Adr    Portname                   Pri    Bit#    Task',0)
  743.   p_AjouteNode(wlist,'-------------------------------------------------------',0)
  744.   Forbid()
  745.   list:=exec.portlist
  746.   plist:=list.head
  747.   WHILE plist
  748.     node:=plist
  749.     IF node.succ
  750.       portname:=node.name
  751.       IF (portname<>NIL) AND (portname[]<>0)
  752.         t:=plist.sigtask
  753.         taskname:=t.name
  754.         IF taskname=NIL THEN taskname:='-'
  755.         StringF(datastr,'\z\h[8] \l\s[25]  \d[5]  \d[5]   \s[20]',
  756.           plist,node.name,node.pri,plist.sigbit,taskname)
  757.         p_AjouteNode(wlist,datastr,0)
  758.       ENDIF
  759.     ENDIF
  760.     plist:=node.succ
  761.   ENDWHILE
  762.   Permit()
  763. ENDPROC
  764. /**/
  765. /*"displaywindows(wlist,exec:PTR TO execbase)"*/
  766. PROC displaywindows(wlist,exec:PTR TO execbase)
  767. /*===============================================================================
  768.  = Para         : NONE
  769.  = Return       : NONE
  770.  = Description  : Build String and copy them to wlist.
  771.  ==============================================================================*/
  772.   DEF slist:PTR TO screen,winlist:PTR TO window,
  773.       intui:PTR TO intuitionbase,datastr[256]:STRING
  774.   intui:=intuitionbase
  775.   p_AjouteNode(wlist,'  Adr    Windowname               Width Height  IDCMP      FLAGS',0)
  776.   p_AjouteNode(wlist,'----------------------------------------------------------------',0)
  777.   slist:=intui.firstscreen
  778.   Forbid()
  779.   WHILE slist
  780.     StringF(datastr,'\z\h[8] \l\s[25]  \d[5]  \d[3]',
  781.       slist,slist.title,slist.width,slist.height)
  782.       p_AjouteNode(wlist,datastr,0)
  783.     winlist:=slist.firstwindow
  784.     WHILE winlist
  785.       StringF(datastr,'\z\h[8] \l\s[25]  \d[5]  \d[3]  $\z\r\h[8]  $\z\r\h[8]',
  786.       winlist,winlist.title,winlist.width,winlist.height,winlist.idcmpflags,winlist.flags)
  787.       winlist:=winlist.nextwindow
  788.       p_AjouteNode(wlist,datastr,0)
  789.     ENDWHILE
  790.     slist:=slist.nextscreen
  791.   ENDWHILE
  792.   Permit()
  793. ENDPROC
  794. /**/
  795. /*"displaymemory(wlist,exec:PTR TO execbase)"*/
  796. PROC displaymemory(wlist,exec:PTR TO execbase)
  797. /*===============================================================================
  798.  = Para         : NONE
  799.  = Return       : NONE
  800.  = Description  : Build String and copy them to wlist.
  801.  ==============================================================================*/
  802.     DEF dlist:PTR TO mh,node:PTR TO ln
  803.     DEF list:PTR TO lh
  804.     DEF datastr[256]:STRING
  805.     DEF f_mem:PTR TO mc,num_c
  806.     list:=exec.memlist
  807.     dlist:=list.head
  808.     p_AjouteNode(wlist,'  Adr    Memoryname               Free    NumBlock  Attrs',0)
  809.     p_AjouteNode(wlist,'---------------------------------------------------------',0)
  810.     WHILE dlist
  811.         node:=dlist
  812.         IF node.succ
  813.             f_mem:=dlist.first
  814.             num_c:=0
  815.             Forbid()
  816.             WHILE f_mem
  817.                 num_c:=num_c+1
  818.                 f_mem:=f_mem.next
  819.             ENDWHILE
  820.             Permit()
  821.             StringF(datastr,'\z\h[8] \l\s[20] \d[12] \d[3]      $\h[8]',dlist,node.name,dlist.free,num_c,dlist.attributes)
  822.             p_AjouteNode(wlist,datastr,0)
  823.         ENDIF
  824.         dlist:=node.succ
  825.     ENDWHILE
  826. ENDPROC
  827. /**/
  828. /**/
  829. /*"»»»»»»»»»»»»»»» MEM"*/
  830. /*"mem(s)"*/
  831. PROC mem(s)
  832.     DEF m:PTR TO LONG
  833.     DEF argstr[256]:STRING
  834.     DEF adr,a,b,radr:PTR TO LONG,c,r
  835.     m:=[0]
  836.     MidStr(argstr,s,3,ALL)
  837.     IF getArg(argstr,'Adr',m)
  838.         IF m[0]
  839.             adr:=Val(m[0],{r})
  840.             IF r=0
  841.                 WriteF('Usage: MEM <adr>\n')
  842.             ELSE
  843.                 adr:=adr AND -2     /* no odd adr */
  844.                 FOR a:=0 TO 7
  845.                     radr:=a*16+adr
  846.                     WriteF('$\r\z\h[8]:   ',radr)
  847.                     FOR b:=0 TO 3 DO WriteF('\r\z\h[8] ',radr[b])
  848.                     WriteF('  "'); c:=radr
  849.                     FOR b:=0 TO 15 DO Out(stdout,IF (c[b]<32) OR (c[b]>126) THEN "." ELSE c[b])
  850.                     WriteF('"\n')
  851.                 ENDFOR
  852.             ENDIF
  853.         ENDIF
  854.     ELSE
  855.         WriteF('Bad Args!!.\n')
  856.     ENDIF
  857.     memend:
  858.     m[0]:=0
  859. ENDPROC
  860. /**/
  861. /**/
  862.  
  863.